<?php 
class equipeController extends CController{
    public $model_name = 'venda/equipe';
    
    public function __construct($vars) {
        $this->addToFreeCod('user');
        if(isset($_SESSION['venda/empresa'])) unset($_SESSION['venda/empresa']);
        parent::__construct($vars);
    }
    
    public function BeforeLoad() {
        parent::BeforeLoad();
        if(!empty($this->item) && CURRENT_ACTION != "apagar"){
            if(!$this->model->hasIntegrante($this->item)){
                $this->LoadResource('html', 'html');
                $link = $this->html->getActionLinkIfHasPermission('venda/equipe/edit/'.$this->cod, 'clique aqui');
                if($link != ""){
                    $this->registerVar('alert',"Esta equipe não possui nenhum <b>vendedor</b>. Para adicionar um novo $link");
                }
                EventTube::clearRegion('body-top');
            }
        }
        
        if(!empty($this->item)){
            $cod_user_equipe = $this->model->getCodEquipeOfUser();
            if($cod_user_equipe != $this->cod){
                EventTube::removeItemFromMenu('body-top', "Nova Visita");
            }
        }
    }
    
    public function formulario($display = true, $link = "") {
        $this->LoadModel('venda/evento', 'ev');
        $ecount = $this->ev->getCount();
        if($ecount > 0){
            $count = $this->model->getCount();
            if($count == 0){
                $this->registerVar('success', "Registre a primeira equipe de Vendas");
                EventTube::clearRegion('body-top');
            }
            parent::formulario($display, $link);
            return;
        }
        
        $this->LoadResource('html', 'html');
        $url = $this->html->getActionLinkIfHasPermission('venda/evento/formulario','Cadastre um novo evento');
        $this->registerVar('msg',"Não existe nenhum <b>evento ativo</b> cadastrado.  $url");
        EventTube::clearRegion('body-top');
        $this->display('admin/exception/index');
    }
    
    public function empresa(){
        $page = isset($this->vars[1])?$this->vars[1]:0;
        $this->registerVar("model", 'venda/empresa');
        $this->registerVar("component", 'venda/empresa');
        $this->registerVar('item', $this->model->getEmpresasByEquipe($this->cod, $page, 'venda/equipe/empresa/'.$this->cod, 10));
        $this->registerVar("comp_action" , 'listar');
        $this->display("admin/auto/areacliente/page");
    }
    
    public function eventos(){
        $page = isset($this->vars[1])?$this->vars[1]:0;
        $this->registerVar("model", 'venda/evento');
        $this->registerVar("component", 'venda/evento');
        $this->registerVar('item', $this->model->getEventosByEquipe($this->cod, $page, 'venda/equipe/empresa/'.$this->cod, 10));
        $this->registerVar("comp_action" , 'listar');
        $this->display("admin/auto/areacliente/page");
    }
    
    public function visita(){
        $page = isset($this->vars[1])?$this->vars[1]:0;
        $this->registerVar("model", 'venda/visita');
        $this->registerVar("component", 'venda/visita');
        $this->registerVar('item', $this->model->getVisitasByEquipe($this->cod, $page, 'venda/equipe/visita/'.$this->cod, 10));
        $this->registerVar("comp_action" , 'listar');
        $this->display("admin/auto/areacliente/page");
    }
    
    public function show($display = true, $link = "") {
        
        if(!cookie::cookieExists("visiting")){
            if(isset($_SESSION['venda/empresa'])) unset($_SESSION['venda/empresa']);
            if(isset($_SESSION['venda/funcionario'])) unset($_SESSION['venda/funcionario']);
        }
        
        if(cookie::cookieExists('venda_equipe_cadastrando')){
            $this->registerVar('success',"Equipe cadastrada corretamente");
            cookie::destroy('venda_equipe_cadastrando');
        }
        
        if(!$this->model->EquipeHasEventoAtivo($this->item)){
            $this->registerVar('alert',
                    "Você não pode registrar uma <b>nova visita</b> pois não existe um <b>evento ativo</b> nesta <b>equipe</b>");
            EventTube::removeItemFromMenu('body-top', 'Nova Visita');
        }
        
        parent::show($display, $link);
    }
    
    public function consultar(){
        if(empty($_POST)){
            $_POST['cep']     = (isset($this->vars[1]))?urldecode($this->vars[1]):"";
            $_POST['inicial'] = (isset($this->vars[2]))?urldecode($this->vars[2]):"";
            $_POST['final']   = (isset($this->vars[3]))?urldecode($this->vars[3]):"";
        }else {
            $url = LINK . "/".CURRENT_ACTION ."/$this->cod/";
            Redirect($url. urlencode($_POST['cep'])."/".urlencode($_POST['inicial'])."/".urlencode($_POST['final']));
        }
        $this->LoadClassFromPlugin('venda/equipe/equipeSearch', 'es');
        $this->registerVar('cep'       , $_POST['cep']);
        $this->registerVar('resultados', $this->es->consultarEndereco($_POST));
        $this->display(LINK.'/consultar');
    }
    
    public function pesquisar(){
        $this->tratamento();
        $this->LoadClassFromPlugin('venda/equipe/equipeSearch', 'es');
        $this->registerVar('formulario', $this->es->getDados());
        $this->registerVar('component' , $this->es->getComponentName($_POST));
        $this->registerVar('resultados', $this->es->search($this->item['venda_equipe_cod'], $_POST));
        $this->registerVar('status', '1');
        $this->display(LINK.'/pesquisar');
    }
    
    private function tratamento(){
        if(empty($_POST)){
            if(count($this->vars) > 1){
                $_POST['pesquisar'] = urldecode($this->vars[2]);
                $_POST['filtrar']   = urldecode($this->vars[1]);
            }
        }else Redirect(LINK . "/".CURRENT_ACTION ."/$this->cod/".urlencode($_POST['filtrar'])."/".urlencode($_POST['pesquisar']));
    }
    
    public function choose(){
        $this->registerVar('eventos', $this->model->getEventosOfEquipe($this->cod, 0));
        $this->display(LINK ."/eventos");
    }
    
    public function relatorio(){
        $cod_evento = $this->vars[1];
        $this->LoadClassFromPlugin('venda/equipe/equipeReport', 'rep');
        $this->rep->init($this->cod, $cod_evento);
        
        $this->LoadModel('venda/evento', 'ev');
        $evento = $this->ev->getItem($cod_evento);
        $this->registerVar('titulo', "Estatísticas do Evento ".$evento['venda_evento_titulo']);
        $this->registerVar('report', $this->rep->relatorioFuncionarios());
        $this->registerVar('total', $this->rep->getEquipeTotal());
        $this->registerVar('media', $this->rep->getEquipeMedia());
        $this->display(LINK ."/relatorio");
    }
    
    public function details(){
        if(!isset($this->vars[3])) Redirect (LINK.'/choose');
        $cod_evento   = $this->vars[1];
        $cod_vendedor = $this->vars[2];
        $detalhar     = $this->vars[3];
        $filtros      = array('visitas', 'convidados', 'aprovados', 'confirmados', 'presentes');
        if(!in_array($detalhar, $filtros)) Redirect (LINK.'/choose');
        
        $this->LoadModel('usuario/login', 'uobj');
        $this->LoadClassFromPlugin('venda/equipe/equipeReport', 'rep');
        $this->rep->init($this->cod, $cod_evento);
        
        $model = ($detalhar == "visitas")?"venda/visita":'venda/visitacomp';
        $vendedor = $this->uobj->getUserNick($this->uobj->getItem($cod_vendedor));
        $this->registerVar('title', "Lista de $detalhar do vendedor $vendedor");
        $this->registerVar('component', $model);
        $this->registerVar('comp_action', 'listInTable');
        $this->registerVar('item', $this->rep->detalhar($cod_vendedor, $detalhar, $model));
        $this->display(LINK.'/details');
    }
    
    public function metas(){
        
        //recupera os eventos da equipe
        $events = $this->model->getAllEvents($this->cod);
        
        //verifica se existe algum evento cadastrado
        if(empty($events)) {
            $this->registerVar('erro','Você só pode cadastrar as metas de uma equipe quando ela possuir algum evento');
            $this->redirect ('venda/equipe/show');
        }
        
        //recupera os eventos ativos ou agendados
        $this->LoadModel('venda/evento', 'ev');
        $event = isset($this->vars[1])?$this->vars[1]:"";
        $ativo = array();
        if($event == ""){
            foreach($events as $ev){
                if($this->ev->is_ativo($ev))$ativo[] = $ev;
            }
        }elseif($this->ev->is_ativo($event))$ativo[] = $event;
        
        //se não existem eventos ativos
        if(empty($ativo)) {
            $this->registerVar('erro','Você só pode cadastrar as metas de uma equipe quando ela possuir algum evento ativo');
            $this->redirect ('venda/equipe/show');
        }
        
        if(count($ativo) == 1){
            $this->model->insereMetas($ativo[0], $this->cod, $this->item['venda_equipe_integrante'] );
            $this->registerVar('metas', $this->model->getMetas($ativo[0], $this->cod));
            $this->registerVar('evento', $this->ev->getItem($ativo[0]));
            $this->display(LINK . "/metas");
        }
        
        else{
            $in = "'".implode("','", $ativo)."'";
            $var = $this->ev->selecionar(array('venda_evento_cod', 'venda_evento_titulo'), "venda_evento_cod IN ($in)");
            $this->registerVar('eventos', $var);
            $this->display(LINK."/escolher");
        }
        
    }
    
    public function savemeta(){
        $vars = explode('-', $_POST['cod']);
        if(count($vars) != "3")die(json_encode (array('erro' => 'Parâmetros inválidos', 'status' => '0')));
        foreach($vars as $v){
            if(!is_numeric($v)) die(json_encode (array('erro' => 'Parâmetros inválidos', 'status' => '0')));
        }
        $var['meta'] = $_POST['meta'];
        $this->LoadModel('venda/meta', 'meta');
        $bool = $this->meta->editar($vars, $var);
        $arr = $this->meta->getMessages();
        $arr['status'] = ($bool === false)?'0':'1';
        die(json_encode($arr));
    }
    
    public function user(){
        if(!isset($this->vars[0])){
            $this->registerVar('erro', 'Não foi possível especificar a equipe do usuário pois ele não foi definido.');
            $this->display('');
            return;
        }
        $cod_eq = $this->model->getCodEquipeOfUser($this->vars[0]);
        if($cod_eq != "") Redirect (LINK . "/show/".$cod_eq);
        $this->registerVar('erro', 'Este usuário não pertence a nenhuma equipe');
        $this->display('');
    }
    
}
?>